package com.decent.manager.system.service.impl;

import com.decent.common.bo.MessageBean;
import com.decent.manager.system.dao.SystemBrandDao;
import com.decent.manager.system.dao.SystemClassifyDao;
import com.decent.manager.system.dao.SystemGoodsDao;
import com.decent.manager.system.dto.SystemBrandDTO;
import com.decent.manager.system.service.SystemBrandService;
import com.decent.manager.system.vo.SystemBrandVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author: decent Gjh
 * @date: 2022/10/25/18:35
 * @description:
 */
@Service
@Slf4j
public class SystemBrandServiceImpl implements SystemBrandService {
    private final SystemBrandDao brandDao;
    private final SystemClassifyDao classifyDao;
    private final SystemGoodsDao goodsDao;

    public SystemBrandServiceImpl(SystemBrandDao brandDao, SystemClassifyDao classifyDao, SystemGoodsDao goodsDao) {
        this.brandDao = brandDao;
        this.classifyDao = classifyDao;
        this.goodsDao = goodsDao;
    }

    /**
     * 新建品牌
     * @param brandDTO 品牌信息
     * @return 是否成功
     */
    @Override
    public MessageBean insertBrand(SystemBrandDTO brandDTO) {
        // 验证分类 classifyId  是否存在
        if (classifyDao.existClassify(brandDTO.getClassifyId())==0){
            return MessageBean.fail("分类不存在");
        }
        brandDao.insert(brandDTO);
        return MessageBean.success();
    }

    /**
     * 删除品牌
     * @param brandDTO 品牌信息
     * @return 是否成功
     */
    @Override
    public MessageBean deleteBrand(SystemBrandDTO brandDTO) {
        // 验证品牌下是否还包含商品
        if (goodsDao.selectNumberByBrandId(brandDTO.getId()) != 0){
            return MessageBean.fail("删除失败,该品牌下还有商品存在");
        }
        int rowNum = brandDao.deleteBrand(brandDTO.getId());
        return rowNum == 0 ? MessageBean.fail("删除失败,指定数据不存在"):MessageBean.success();
    }

    /**
     * 更新品牌
     * @param brandDTO 品牌信息
     * @return 是否成功
     */
    @Override
    public MessageBean updateBrand(SystemBrandDTO brandDTO) {
        int rowNum = brandDao.updateBrand(brandDTO);
        return rowNum == 0 ? MessageBean.fail("更新失败"):MessageBean.success();
    }

    /**
     * 品牌
     * @param brandDTO 品牌信息
     * @return 品牌列表
     */
    @Override
    public MessageBean selectBrand(SystemBrandDTO brandDTO) {
        List<SystemBrandVO> classifies = brandDao.selectBrand(brandDTO);
        if (classifies==null||classifies.isEmpty()) {
            return MessageBean.success("暂无数据");
        }
        return MessageBean.success(classifies);
    }

}
